//第二版：服务端发送，客户端响应接收。
// server.go
package main
 
import (
	"bufio"
	"fmt"
	"net"
    "os"
    "strings"
)
 
//处理函数
func process(conn net.Conn) {
	defer conn.Close() //关闭连接
	inputReader := bufio.NewReader(os.Stdin)
	for {
		reader := bufio.NewReader(conn)
		var buf [128]byte
		n, err := reader.Read(buf[:]) //读取数据
		if err != nil {
			fmt.Println("reand from client failed,err:", err)
			break
		}
		recvStr := string(buf[:n])
		if recvStr != "EXIT"{
		    fmt.Println( recvStr)
		}

		
		input, _ := inputReader.ReadString('\n') //读取用户输入
		inputInfo := strings.Trim(input, "\r\n")
		if strings.ToUpper(inputInfo) == "Q" { //如果输入q就退出
			return
		}
		
		
		conn.Write([]byte(inputInfo)) //发送数据
	}
 
}
 
func main() {
	listen, err := net.Listen("tcp", "0.0.0.0:9504")
	if err != nil {
		fmt.Println("listen failed,err:", err)
		return
	}
	for {
		conn, err := listen.Accept() //建立连接
		if err != nil {
			fmt.Println("accpet failed,err:", err)
			continue
		}
		go process(conn) //启动一个goroutine处理连接
 
	}
 
}